Pmoo.Widget = {};

Pmoo.Widget.Tab = function(tabSel,conSel,userOptions){
	var options = {
		default_tab : 0,
		active_class : 'active',
		bind_type : 'click',
		after_show : $empty
		//,after_show : function(that,idx){}
		}
	$extend(options,userOptions);	
	if(!tabSel || !conSel){
		return false;
		}
	if($type(tabSel) == 'string'){
		tabSel = [tabSel];
		}
	if($type(conSel) == 'string'){
		conSel = [conSel];
		}		
	var tabs = $$.run(tabSel);
	var cons = $$.run(conSel);
	
	function init(){
		tabs.each(function(tab,i){
			tab.addEvent(options.bind_type,function(){
				doTab(i);
				return false;
				});
			});
		}
	
	function doTab(index){
		tabs.removeClass(options.active_class);
		cons.hide();
//		conSel.each(function(c){
//			c.hide();
//			});
		tabs[index].addClass(options.active_class);
		tabs[index].blur();
		tabs[index].getElements('*').each(function(el){
			el.blur();
			});		
		cons[index].show();
		try{
			options.after_show(index,tabs[index],cons[index]);
			}
		catch(e){}
		}
		
	init();	
	doTab(options.default_tab);
	this.doTab = doTab;	
	};


/**
 *池子功能,随机显示一定数量的element
 *@param string sel selector
 *@param int num 显示个数
 *@param string itemType 显示方式[inline|block]
 */ 
Pmoo.Widget.Pool = function(sel, num, itemType){
	var items = $$(sel);
	var len = items.length;

	/**
	 * 乱序函数
	 * @param {Object} a
	 * @param {Object} b
	 */	
	function _sort(a, b){
			return (Math.random() - Math.random()) > 0;
			}
			
	/**
	 * 显示处理函数
	 * @param {Object} els
	 */		
	function _handle(els){
		els.each(function(el){
			var txt = el.getElement('textarea');
			if(txt){
				el.html(txt.value);
			}
			el.show(itemType);
		});		
	}
	
	if(len <= num){
		//池子里的物件数比显示数少
		_handle(items);
		return;
	}
								
	var tmp = items.select(num);;
	items.hide();
	_handle(tmp);
	};
	
/**
 * 折叠套件
 * 
 * @param {String} itemSel 显示物件的selector
 * @param {String} btnSel 按钮的selector
 * @param {Object} options 可选参数
 */
/*
usage:
new Pmoo.Widget.Folder('div.content p', '#folder', {
	showTo : 3,
	showTip : '显示>>',
	hideTip : '隐藏<<'
});
 */	
Pmoo.Widget.Folder = function(itemSel, btnSel, options){
	var settings = {
		//默认显示的item数量
		showTo : 5,
		//按钮上的文字提示:显示
		showTip : '显示>>',
		//按钮上的文字提示:隐藏
		hideTip : '隐藏<<',
		//默认展开
		defaultOpen : false
	};
	
	$extend(settings, options);
	
	var items  = $type(itemSel) == 'string' ? $$(itemSel) : itemSel;
	var len    = items.length;
	var button = $type(btnSel) == 'string' ? $$(btnSel) : btnSel;
	
	if(len <= settings.showTo){
		//物件个数小于默认显示个数
		button.hide();
	}
	else{
		doBtnShow();
	}
	
	/**
	 * 显示物件
	 * 
	 * @param {Int} showTo 显示showTo之前的所有物件
	 */
	function showItems(showTo){
		items.each(function(item,i){
			if(i < showTo){
				item.show();
			}
			else{
				item.hide();
			}
		});
	}
	
	/**
	 * 将按钮改为'显示'按钮
	 */
	function doBtnShow(){
		showItems(settings.showTo);
		button.html(settings.showTip);
		button.onclick = function(){
			this.blur();
			doBtnHide();
			return false;
		};
	}
	
	/**
	 * 将按钮改为'隐藏'按钮
	 */
	function doBtnHide(){
		showItems(len);
		button.html(settings.hideTip);
		button.onclick = function(){
			this.blur();
			doBtnShow();
			return false;
		};
	}
	
	if (settings.defaultOpen){
		doBtnHide();
	}
};















	